﻿#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
#include<vector>
using namespace std;

//左子数之和
//class Solution {
//public:
//    int sumOfLeftLeaves(TreeNode* root) {
//        if (root == nullptr) return 0;
//        if (root->left == nullptr && root->right == nullptr)
//            return 0;
//
//        int leftValue = sumOfLeftLeaves(root->left);    
//        if (root->left && !root->left->left && !root->left->right) 
//        { 
//            leftValue = root->left->val;
//        }
//        int rightValue = sumOfLeftLeaves(root->right); 
//
//        int sum = leftValue + rightValue;               
//        return sum;
//    }
//};
//
//
////213. 打家劫舍 II
//class Solution {
//public:
//    int rob(vector<int>& nums) {
//        if (nums.size() == 1)
//        {
//            return nums[0];
//        }
//        int n = nums.size();
//        int ret = max(nums[0] + robbery(nums, 2, n - 2), robbery(nums, 1, n - 1));
//        return ret;
//    }
//    int robbery(vector<int>& nums, int left, int right)
//    {
//        if (left > right)
//            return 0;
//        vector<int> f(right + 1);
//        vector<int> g(right + 1);
//        f[left] = nums[left];
//
//        for (int i = left + 1; i <= right; i++)
//        {
//            f[i] = g[i - 1] + nums[i];
//            g[i] = max(g[i - 1], f[i - 1]);
//        }
//
//        return max(f[right], g[right]);
//
//    }
//};
//
//
////740. 删除并获得点数
//class Solution {
//public:
//    int deleteAndEarn(vector<int>& nums) {
//        int arr[10001] = { 0 };
//
//        for (auto x : nums)
//            arr[x] += x;
//
//        vector<int> f(10001);
//        vector<int> g(10001);
//        f[0] = arr[0];
//
//        for (int i = 1; i < f.size(); i++)
//        {
//            f[i] = g[i - 1] + arr[i];
//            g[i] = max(g[i - 1], f[i - 1]);
//        }
//
//        return max(f[f.size() - 1], g[g.size() - 1]);
//    }
//};



//剑指 Offer II 091. 粉刷房子 力扣
//class Solution {
//public:
//	int minCost(vector<vector<int>>& costs) {
//		// dp[i][j] 第i个房⼦刷成第j种颜⾊最⼩花费
//		int n = costs.size();
//		vector<vector<int>> dp(n + 1, vector<int>(3));
//		for (int i = 1; i <= n; i++) {
//			dp[i][0] = min(dp[i - 1][1], dp[i - 1][2]) + costs[i - 1][0];
//			dp[i][1] = min(dp[i - 1][0], dp[i - 1][2]) + costs[i - 1][1];
//			dp[i][2] = min(dp[i - 1][1], dp[i - 1][0]) + costs[i - 1][2];
//		}
//		return min(dp[n][0], min(dp[n][1], dp[n][2]));
//	}
//};
//
//
//int main()
//{
//	vector<vector<int>> cost(3, vector<int>(3));
//	cost[0][0] = 17;
//	cost[0][1] = 2;
//	cost[0][2] = 17;
//	cost[1][0] = 16;
//	cost[1][1] = 16;
//	cost[1][2] = 5;
//	cost[2][0] = 14;
//	cost[2][1] = 3;
//	cost[2][2] = 19;
//	Solution().minCost(cost);
//	system("pause");
//}





//计算一年的第几天
//int main() {
//    static int montharr[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//    int count = 0;
//    int year = 0, month = 0, day = 0;
//    while (cin >> year >> month >> day)
//    {
//        if (month > 2 && (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)))
//        {
//            count += 1;
//        }
//        count += day;
//        month--;
//        while (month > 0)
//        {
//            count += montharr[month--];
//        }
//        cout << count << endl;
//    }
//    return 0;
//}



//
//
//int main() {
//    int year1, month1, day1;
//    int year2, month2, day2;
//    int count1 = 0, count2 = 0;
//    static int montharr[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//    while (cin >> year1 >> month1 >> day1)
//    {
//        cin >> year2 >> month2 >> day2;
//        if (month1 > 2 && (year1 % 400 == 0 || (year1 % 100 != 0 && year1 % 4 == 0)))
//        {
//            count1 += 1;
//        }
//        count1 += day1;
//        month1--;
//        while (month1 > 0)
//        {
//            count1 += montharr[month1--];
//        }
//        if (month2 > 2 && (year2 % 400 == 0 || (year2 % 100 != 0 && year2 % 4 == 0)))
//        {
//            count2 += 1;
//        }
//        count2 += day2;
//        month2--;
//        while (month2 > 0)
//        {
//            count2 += montharr[month2--];
//        }
//        cout << abs(count1 - count2) << endl;
//    }
//    return 0;
//}



//int mon[12] = { 0,31,59,90,120,151,181,212,243,273,304,334 };
//
////给出年月日，计算距离0000年0月1日的天数和
//
//
//
//int CountDay(int y, int m, int d)
//
//{
//
//    // 计算0-y年的天数
//
//    int yearDay = y * 365 + y / 4 - y / 100 + y / 400;
//
//    // 计算到0-m月的天数
//
//    int monthDay = mon[m - 1];
//
//
//
//    if (m > 2 && ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0))
//
//        monthDay += 1;
//
//
//
//    return yearDay + monthDay + d;
//
//}
//
//
//
//int main()
//
//{
//
//    int year1, month1, day1;
//
//    scanf("%4d%2d%2d", &year1, &month1, &day1);
//
//    int n1 = CountDay(year1, month1, day1);
//
//
//
//    int year2, month2, day2;
//
//    scanf("%4d%2d%2d", &year2, &month2, &day2);
//
//    int n2 = CountDay(year2, month2, day2);
//
//
//
//    cout << abs(n1 - n2) + 1 << endl;
//    system("pause");
//
//}




int montharrary[13] = { 0,31,59,90,120,151,181,212,243,273,304,334 };

int GetConntDat(int year, int month, int day)
{
    int count = (year * 365) + (year / 4) - (year / 100) + (year / 400);
    count += montharrary[month - 1];
    if (month > 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0))
        count += 1;
    return count + day;
}
int main() {
    int year1, month1, day1;
    scanf("%4d%2d%2d", &year1, &month1, &day1);
    int count1 = GetConntDat(year1, month1, day1);

    int year2, month2, day2;
    scanf("%4d%2d%2d", &year2, &month2, &day2);
    int count2 = GetConntDat(year2, month2, day2);

    cout << abs(count1 - count2) << endl;
    return 0;
}